/**
  **************************************************************************
  * @file     oled.h
  * @brief    OLED 相关定义。
  **************************************************************************
  * 引脚定义
  * SDA: PB11
  * CLK: PB10
  * 引脚对应的硬件IIC为 IIC2
  *
  **************************************************************************
  */
#ifndef __OLED_H
#define __OLED_H

// 包含 at32f413.h 
#include "at32f413.h"

/* OLED IO定义 */
#define I2C_SDA_GPIOX				GPIOB
#define I2C_SDA_PIN				GPIO_PINS_11
#define I2C_SDA_CRM_PERIPH_CLOCK	CRM_GPIOB_PERIPH_CLOCK

#define I2C_SCL_GPIOX				GPIOB
#define I2C_SCL_PIN				GPIO_PINS_10
#define I2C_SCL_CRM_PERIPH_CLOCK	CRM_GPIOB_PERIPH_CLOCK

#define I2C_PORT	I2C2
#define I2C_CLK		CRM_I2C1_PERIPH_CLOCK

#define OLED_IIC_ADDR	0x7A	/* 0x7A or 0x78 */
#define I2Cx_SPEED		(100000) // 100k

#define I2C_TIMEOUT		0xFFFFFFFF

/* OLED(SSD1306) 命令定义 */

// 显示命令
#define OLED_DISPLAY_OFF			0xAE // 关闭显示（睡眠模式）
#define OLED_DISPLAY_ON				0xAF // 打开显示（正常模式）
#define OLED_SET_START_LINE			0x40
#define OLED_SET_LOW_COLUMN			0x00
#define OLED_SET_HIGH_COLUMN		0x10
#define OLED_SET_CONTRAST			0x81 // 设置对比度
#define OLED_DISPLAY_ALL_ON			0xA5 // 
#define OLED_DISPLAY_ALL_ON_RESUME	0xA4 //
#define OLED_NORMAL_DISPLAY			0xA6 // 正常显示
#define OLED_INVERT_DISPLAY			0xA7 // 反显显示
#define OLED_MEMORY_MODE			0x20
#define OLED_CMD  0	//写命令
#define OLED_DATA 1	//写数据


void oled_init(void);
void OLED_ColorTurn(uint8_t i);
void OLED_DisplayTurn(uint8_t i);
void OLED_Clear(void);
void OLED_DrawPoint(uint8_t x,uint8_t y,uint8_t t);
void OLED_Refresh(void);
#endif
